﻿using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Kikooland.Core;

namespace Kikooland
{
    public class Spell
    {
        public Int32 ID { get; set; }

        public string Description { get; set; }
        public Texture2D ActionBarSkin { get; set; }
        public RectangleEx ActionBarPosition { get; set; }

        public float SpellCastMaxTimer { get; set; } // en millisecondes
        public float SpellCastCurrentTimer { get; set; } // en millisecondes
        public RectangleEx SpellCastTimerBarPosition { get; set; }
        public Texture2D SpellCastTimerBarTexture { get; set; }

        public SpellCastState SpellCastState { get; set; } // état en cours du cast
        public List<Projectile> SpellCastResult { get; set; } // le résutat de l'incantation (sous forme de projetctiles)

        public Mob TargetedMob { get; set; } // le mob ciblé (est conservé tant que le projectile n'est pas arrivé)

        public Spell()
        {
            SpellCastResult = new List<Projectile>();
        }

    }

    /// <summary>
    /// enum donnant l'état du sort en cours
    /// Le seul roulement autorisé est le suivant : 
    /// UnCastable -> 
    ///     Castable -> 
    ///         Casting { -> Casted (si sort casté jusqu'au bout) } ->
    ///             UnCastable
    /// </summary>
    public enum SpellCastState
    {
        UnCastable,
        Castable,
        Casting,
        Casted
    }
}
